package com.hama.iotrust.common.ui;

import java.util.ArrayList;

import com.hama.iotrust.common.ui.EasyUITreeGridRow;

public class EasyUITreeGrid extends ArrayList<EasyUITreeGridRow> {

    private static final long serialVersionUID = -7789650832106553912L;

    public EasyUITreeGridRow getChildNodeById(String id) {
        for (EasyUITreeGridRow subNode : this) {
            // 判断根节点
            if (subNode.getId().equals(id)) {
                return subNode;
            }
            // 在根节点的子节点中查找
            EasyUITreeGridRow foundSubNode = subNode.getChildNodeById(id);
            if (foundSubNode != null) return foundSubNode;
        }
        return null;
    }

    public void removeNode(String id) {
        for (int i = size() - 1; i >= 0; i--) {
            EasyUITreeGridRow subNode = get(i);
            if (subNode.getId().equals(id)) {
                remove(subNode);
            }
            subNode.removeNode(id);
        }
    }

    /**
     * 添加节点,自动查找父节点
     * 
     * @param node
     * @param parentId
     */
    public void addNode(EasyUITreeGridRow node) {
        EasyUITreeGridRow parentNode = getChildNodeById(node.getParentId());
        if (parentNode != null) {
            parentNode.addChildNode(node);
        } else {
            add(node);
        }
        // 判断根节点中是否有所添加节点的子节点，有的话调整节点从属关系
        for (int i = this.size() - 1; i >= 0; i--) {
            EasyUITreeGridRow rootNode = get(i);
            if (node.getId().equals(rootNode.getParentId())) {
                node.addChildNode(rootNode);
                this.remove(rootNode);
            }
        }
    }

}
